1. Field of the Invention
The present invention relates in general to the field of computers and similar technologies, and in particular to software utilized in this field. Still more particularly, it relates to a method, system and computer-usable medium for application startup page fault management in a hardware multithreading environment.
2. Description of the Related Art
A page fault is a trap to software raised by hardware when a program accesses a memory page that is mapped in a virtual memory address space but not loaded in physical memory. Often, page faults are not errors but rather are common and necessary indications to an operating system that the amount of virtual memory available to programs needs to increase. Generally, an operating system handles a page fault by making a required page accessible at a location in physical memory. For example, an exception handling unit of the operating system coordinates with a memory management unit of a processor to load the page in virtual memory, such as by retrieving the page from persistent memory like a hard disk drive.
Page faults are common during application startups as the operating system loads application pages from persistent memory to virtual memory. When large applications startup, a significant portion of startup time is spent in first reference page faults, most of which result from paging data in from a backing storage, such as a file system or database. Many first reference page faults reads that occur during an application startup are the same each time the application starts. For example, software games tend to use the same initial screen shots and user profiles at each startup. As another example, database applications tend to load a common initial set of buffer pools and shared libraries. As applications use larger working sets, such as SGA in a relational database, applications tend to have longer startups, in part due to first reference page faults encountered by startup tasks and processes. Page faults tend to stall applications, especially if there is a page-in from backing store involved. However, first reference page faults on working storage data, such as stack, heap and shared memory, do not always require page-in. For example, some first reference page faults are not I/O bound, but rather are processor bound.
One technique to improve system response to page faults is to use persistent caching of data for applications at runtime. Cached data is maintained in storage having a more rapid response and located closer to the processing node. Such caches are referenced and updated during application runtime so that long running applications that access large amounts of data from backing storage replace cache contents over time, including the contents of initial I/O associated with application startup. Thus, when an application is restarted after a node reboot, the initial I/O cache contents are not typically available for startup operations.